package com.supermarket.mapper;

import com.supermarket.entity.Article;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ArticleMapper {
    // 插入文章
    int insertArticle(Article article);

    // 更新文章
    int updateArticle(Article article);

    // 删除文章
    int deleteArticle(@Param("id") Integer id);

    // 根据ID查询文章
    Article selectArticleById(@Param("id") Integer id);

    // 查询所有文章
    List<Article> selectAllArticles();

    /**
     * 分页查询文章
     *
     * @param userId  用户ID（可选）
     * @param status  状态（可选）
     * @return 文章列表
     */
    List<Article> selectArticlesWithPagination(@Param("userId") Integer userId, @Param("status") String status);

    // 根据用户ID查询文章
    List<Article> selectArticlesByUserId(@Param("userId") Integer userId);

    // 更新文章浏览次数
    int incrementViews(@Param("id") Integer id);

    // 更新文章点赞数（增加）
    int incrementLikes(@Param("id") Integer id);

    // 取消点赞
    int decrementLikes(@Param("id") Integer id);

    // 根据状态查询文章
    List<Article> selectArticlesByStatus(@Param("status") String status);

    // 根据浏览量排序查询热门文章
    List<Article> selectHotArticles(@Param("limit") Integer limit);

    // 批量查询指定ID的文章
    List<Article> selectArticlesByIds(@Param("ids") List<Integer> ids);
} 